package db.configuration;

//import DataBase.DBConfiguration;
//import cache.AdminCache;
//import cache.NotExistLabelException;
import db.connectionPool.DBConfiguration;

/**
 * 
 * @author Jalbs
 */
public class ConfigAdmin {

        
    private DOMxmlParser xmlParser;
    private String fileName ="config/server.xml";
//    private AdminCache cache;
    private boolean configLoaded;
	
        /**
         * Inicializa el objeto DOMxmlParser, el objeto Cache y una bandera de configuracion boolean
         */
        public ConfigAdmin(){
            xmlParser = new DOMxmlParser(fileName);
            configLoaded=false;
	}

        /**
         * Inicializa el objeto DOMxmlParser, el objeto Cache y una bandera de configuracion boolean
         * @param name String de la direccion del archivo xml
         */
        public ConfigAdmin(String name){
            this.fileName=name;
            xmlParser = new DOMxmlParser(fileName);
            //cache=AdminCache.getInstance();
            configLoaded=false;

	}

        /**
         * Parsea el archivo de configuracion y lo carga a la cache
         * @throws ServerActiveException Esta excepcion se genera cuando el archivo de configuracion xml tiene etiquetados como activas a mas de una configuracion
         */
        public void loadConfiguration() throws ServerActiveException{
            xmlParser.parseDocument();
            //config=xmlParser.getConfig();
//            if(configLoaded==true){
//                updateConfigToCache();
//            }else{
//                loadConfigToCache();
//            }
        }

        /**
         *Obtiene la configuracion activo
         * @return Objeto que contiene la informacion de la configuracion
         */
        public DBConfiguration getConfiguration(){
            return xmlParser.getConfig();
        }

        /**
         *obtener nombre del archivo de configuracion
         * @return Direccion del archivo xml
         */
        public String getFileName(){
        return this.fileName;
        }

       /**
        *obtener nombre de la configuracion activo
        * @return Nombre del server actualmente activo
        */
       public String getActualConfigName(){
        return xmlParser.getConfig().getServerName();
       }

       /**
        * Carga por primera vez la configuracion a la cache
        */
//       private void loadConfigToCache(){
//           cache.cargarEntidad("DBConfiguration", getConfiguration());
//        }
//
//       /**
//        * Actualiza la configuracion que tiene la cache
//        */
//        private void updateConfigToCache(){
//        try {
//            cache.actualizarContenidoEtiqueta("DBConfiguration", getConfiguration());
//        } catch (NotExistLabelException ex) {
//            Logger.getLogger(ConfigAdmin.class.getName()).log(Level.SEVERE, null, ex);
//        }
//        }

       public int getConnectionSize(){
            return xmlParser.getConfig().getNumConnections();
       }
}
